home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / quartz / quartz10.lha / README < prev   
Text File  |  1990-05-18  |  2KB  |  57 lines

  1. This directory contains source code and makefiles for 
  2. Quartz, an enhanced version of Presto 0.4, and FastThreads.
  3. Quartz works with programs written for either Presto or FastThreads.
  4.  
  5. The sub-directories are:
  6.  
  7. doc -- documentation for these systems
  8.  
  9. FTexample -- example FastThreads programs, linked with Quartz
  10.  
  11. Pexample -- an example Presto program, linked with Quartz
  12.  
  13. src -- source for the 3 systems
  14.  
  15. bin -- utility programs
  16.  
  17. lib -- linkable libraries
  18.  
  19.  
  20. ** IMPORTANT: KNOWN BUGS AND RECOMMENDATIONS ***
  21.  
  22. Both FastThreads and Presto have debugging versions: compiled with -g,
  23. and with assertions to help detect erroroneous use of the libraries
  24. (e.g., using a lock before initializing it).  FastThreads also has 
  25. a lint library (in the lib sub-directory).
  26.  
  27. From our experience with people using FastThreads and Presto, you
  28. will be liable to think that these libraries are broken when it may
  29. be a bug in your program.  For example, if you have an 
  30. intermittent error, it need not necessarily be a concurrency problem.
  31. Especially in C, memory allocation problems (eg, overwriting the end
  32. of an allocated chunk) may appear intermittent when the program is 
  33. run on more than one processor (or even between recompilations of
  34. the same program).  These types of errors are likely to show up
  35. as crashes within the thread libraries (or in Quartz), since they
  36. make extensive use of the heap.
  37.  
  38. Thus, we highly recommend that you debug your programs first 
  39. on one processor, using the debugging versions of FastThreads or
  40. Presto, then debug your program on more than one processor,
  41. and only given a correct program, attempt to tune using Quartz.
  42.  
  43. That said, Quartz is somewhat flaky when used with C optimization 
  44. turned on (-O -i).  Many programs will work this way, but we suggest 
  45. that you first profile with -g turned on and the debugging version 
  46. of Quartz (thread_dp.a or qlib_d.a).  
  47.  
  48. One further point: Quartz will record information for any Presto
  49. or FastThreads thread that is created with a non-null name.
  50. It will aggregate threads with the same name, but it does so 
  51. inefficiently (creating large intermediate files).  Thus, you should 
  52. be careful and only give names to threads when there are only a 
  53. relatively few of them or you need to specially separate out their 
  54. performance.  Alas, Quartz also records information for each separate 
  55. synchronization object (lock, barrier, etc.) whether or not you give
  56. it a name.  We are currently working on a general fix for this problem.
  57.